import testIDCard from './idcard-validation.js'

/**
 * @param {string} path
 */
export function isExternal(path) {
  return /^(https?:|mailto:|tel:)/.test(path)
}

/**
 * @param {string} str
 */
export function validUsername(str) {
  const valid_map = ['admin', 'editor']
  return valid_map.includes(str.trim())
}

/**
 * @param {string} str
 */
export function validPhone(str) {
  const reg = /^(0|86|17951)?(1)(3\d|4\d|5\d|6\d|7\d|8\d|9\d)\d{8}$/
  return str == undefined || str == '' || str.match(reg)
}

/**
 * @param {string} str
 */
export function validEmail(str) {
  const reg = /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/
  return str == undefined || str == '' || str.match(reg)
}

/**
 * @param {string} str
 */
export function validIDCard(str) {
  return str == undefined || str == '' || testIDCard.testIDCard(str)
}

/**
 * @param {string} str
 */
export function validHttp(str) {
  const reg = /(http|https):\/\/([\w.]+\/?)\S*/
  return str == undefined || str == '' || str.match(reg)
}

// 自定义表单验证：手机号码
export function validatePhone(rule, value, callback) {
  if (!validPhone(value)) {
    callback(new Error('请输入正确的11位手机号码'))
  } else {
    callback()
  }
}

// 自定义表单验证：电子邮箱
export function validateEmail(rule, value, callback) {
  if (!validEmail(value)) {
    callback(new Error('请输入正确的电子邮箱'))
  } else {
    callback()
  }
}

// 自定义表单验证：身份证号码
export function validateIDCard(rule, value, callback) {
  if (!validIDCard(value)) {
    callback(new Error('请输入正确的身份证号码'))
  } else {
    callback()
  }
}

// 自定义表单验证：网站地址
export function validateHttp(rule, value, callback) {
  if (!validHttp(value)) {
    callback(new Error('请输入正确的网站地址'))
  } else {
    callback()
  }
}

// 自定义表单验证：数组长度>0
export function validateArray(rule, list, callback) {
  if (list == undefined || list.length <= 0) {
    callback(new Error('数组长度必须大于0'))
  } else {
    callback()
  }
}
